//
//  YWReportTroubleManager.h
//  maintain
//
//  Created by 烟雨云渊 on 17/3/2.
//  Copyright © 2017年 ewin. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "YWSingleton.h"
#import "YWLoginTool.h"

@class YWReportTroubleModel;
@class YWMission;

static NSString *const KPostSelectLocationSubNotification = @"KPostSelectLocationSubNotification";
#define KYWRememberSelectSubscriptionKey  [NSString stringWithFormat:@"%@%@%ld.data",@"KYWRememberSelectSubscriptionKey",[YWLoginTool loginUser].companyAccount,(long)[YWLoginTool loginUser].uniqueId]

@interface YWReportTroubleManager : NSObject
YWSingletonH(Manager)


/**
 *  更新报障数据库表，数组更新
 *
 *  @param reportTroubleArray 更新报障数组
 *
 *  @return 结果
 */
- (BOOL)updateReportTroubleWithArray:(NSArray*)reportTroubleArray;
/**
 *  更新报障单状态
 *
 *  @param status 报障单状态
 *
 *  @return 结果
 */
-(BOOL)updateReportTroubleStatus:(NSInteger)status troubleId:(NSInteger)troubleId;
/**
 *  更新报障的troubleID和sequence
 *
 *  @param reportTrouble 接口返回的troubleId
 *  @param originTroubleId 本地的生成的troubleId
 *
 *  @return 结果
 */
- (BOOL)updateReportTroubleIdAndSequence:(YWReportTroubleModel*)troubleJson originTroubleId:(NSInteger)originTroubleId;
/**
 *  设置报障任务上传失败
 *
 *  @param reportTrouble 任务模型
 *
 *  @return 结果
 */
- (BOOL)setUploadFailWithReportTrouble:(YWReportTroubleModel*)reportTrouble;
/**
 *  删除本地报障
 *
 *  @param troubleId troubleId
 *
 *  @return 结果
 */
- (BOOL)deleteReportTroubleWithTroubleId:(NSInteger)troubleId orUniqueTag:(NSString *)uniqueTag;
/**
 *  获取所有的我的报障（包括未分配，已分配）
 *
 *  @param page 页数
 *
 *  @return 结果
 */
- (NSArray *)getMyReportTroubleWithPage:(NSInteger)page;
/**
 *  获取所有的报障(完成和未完成)
 *
 *  @param page 页数
 *
 *  @return 结果
 */
- (NSArray *)getMyReportTroubleWithAssignStatus:(BOOL)isAssign page:(NSInteger)page;
/**
 *  获取抢单
 *
 *  @param page 页数
 *
 *  @return 结果
 */
- (NSArray *)getReportTroubleUnassignBillsWithPage:(NSInteger)page;
/**
 *  获取该设备下的报障
 *
 *  @param equipmentId 设备id
 *  @param page 页数
 *
 *  @return 结果
 */

- (NSArray *)getReportTroubleWithEquipmentId:(NSString*)equipmentId page:(NSInteger)page;
/**
 *  获取该地址下的报障
 *
 *  @param locationId 地址id
 *  @param page 页数
 *
 *  @return 结果
 */

- (NSArray *)getReportTroubleWithLocationId:(NSInteger)locationId page:(NSInteger)page;
/**
 *  获取单个报障单
 *
 *  @param troubleId 报障单Id
 *
 *  @return 结果
 */
- (YWReportTroubleModel*)getOneReportTroubleWithTroubleId:(NSInteger)troubleId;
#pragma mark - 网络请求
/**
 *  获取我的报障单
 *
 *  @return 无
 */
- (void)requestMyReportTroubleWithPage:(NSInteger)page pageSize:(NSInteger)pageSize completeBlock:(void (^)(NSInteger))complete;
/**
 *  获取分配报障单（派单、已分派）
 *
 *  @return 无
 */
- (void)requestReportTroubleWithPage:(NSInteger)page pageSize:(NSInteger)pageSize troubleStatus:(NSString*)troubleStatus completeBlock:(void(^)(NSArray *reportTroubleArray))complete;
/**
 *  获取所有报障单（抢单、记录）
 *
 *  @return 结果
 */
- (void)requestReportTroubleWithDictionary:(NSMutableDictionary*)params completeBlock:(void(^)(NSArray *reportTroubleArray))complete;
/**
 *  通过设备Id
 *  请求报障记录
 *  equipmentId 设备Id
 *  @return 无
 */
- (void)requestPostTroubleWithEquipmentId:(NSString*)equipmentId page:(NSInteger)page pageSize:(NSInteger)pageSize completeBlock:(void(^)(BOOL success))complete;
/**
 *  通过地址Id
 *  请求报障记录
 *  locationId 地址Id
 *  @return 无
 */
- (void)requestPostTroubleWithLocationId:(NSInteger)locationId page:(NSInteger)page pageSize:(NSInteger)pageSize completeBlock:(void(^)(BOOL success))complete;
/**
 *  开始后台上传任务
 *
 *  @param reportTrouble 报障模型
 *  @param pictures      记录中所有的图片
 */
- (void)startUploadReportTrouble:(YWReportTroubleModel*)reportTrouble pictures:(NSArray*)pictures;
/**
 *  上传失败的报障
 *
 *
 */
- (void)startUnUploadReportTrouble;
/**
 *  上传失败的报障
 *
 *  return 上传状态是是失败的报障
 */
- (NSArray*)uploadFailedReportTroubleArray;
/*
 *  上传订阅
 *
 *  return 上传状态
 */
- (void)postSubscriptionOptionsWithlocationArray:(NSMutableArray*)locationArray systemArray:(NSMutableArray*)systemArray  WithComplete:(void(^)(BOOL success))complete;
@end
